package cn.kingyang.yiyi.utils;

import android.text.TextUtils;

import java.util.regex.Pattern;

/**
 * Created by KingYang on 2016/5/13.
 * E-Mail: admin@kingyang.cn
 */
public class ValidUtil {

    /**
     * 判断是不是验证码
     *
     * @param code
     * @return
     */
    public static boolean isVerifyCode(String code) {
        return validation("\\d{6}", code);
    }

    public static boolean isUid(String uid){
        return validation("\\d{6,8}",uid);
    }

    public static boolean isMobile(String mobile) {
        // 如果手机中有+86则会自动替换掉
        return validation("^[1][3,4,5,7,8][0-9]{9}$", mobile.replace("+86", ""));
    }


    /***
     * 正则表达式为：^[test-z0-9_-]{3,15}$ 各部分作用如下： [test-z0-9_-] -----------
     * 匹配列表中的字符，test-z,0–9,下划线，连字符 {3,15}-----------------长度至少3个字符，最大长度为15
     * 如果有不同需求的可以参考以上修改正则表达式
     */
    public static boolean isUserName(String username) {
        return validation("^[test-z0-9_-]{3,15}$", username);
    }


    /**
     * ^ 匹配一行的开头位置(?![0-9]+$) 预测该位置后面不全是数字
     * (?![test-zA-Z]+$) 预测该位置后面不全是字母
     * [0-9A-Za-z] {6,16} 由6-16位数字或字母或下划线组成
     */
    public static boolean isPassword(String pwd) {
        return validation("^[0-9A-Za-z_]{6,16}$", pwd);
    }

    /**
     * [0-9A-Za-z] {6,16} 由6-16位数字或字母或下划线组成
     */
    public static boolean isSimplePassword(String pwd) {
        return validation("^[0-9a-zA-Z_]{6,16}$", pwd);
    }


    public static boolean isEmail(String mail) {
        return validation("^([test-z0-9A-Z]+[-|\\.]?)+[test-z0-9A-Z]@([test-z0-9A-Z]+(-[test-z0-9A-Z]+)?\\.)+[test-zA-Z]{2,}$", mail);
    }

    /**
     * 邀请码可以为空
     * @param code
     * @return
     */
    public static boolean isInviteCode(String code) {
        return "".equals(code) || validation("^\\d{6,8}$", code);
    }

    /**
     * 正则校验
     *
     * @param str 需要校验的字符串
     * @return 验证通过返回true
     */
    public static boolean validation(String pattern, String str) {
        return !TextUtils.isEmpty(str) && Pattern.compile(pattern).matcher(str).matches();
    }

}
